import 'package:sow_app_core/sow_app_core.dart';
import 'package:sow_app_i18n/sow_app_i18n.dart';

abstract class NovelRepository {
  Future<List<Novel>> novelList(String? title);
  Future<Novel> novelDetail(String novelId);
  Future<void> novelSubscribe(String novelId);
  Future<void> novelUnsubscribe(String novelId);

  Future<List<Novel>> getNovelListByClass(String classifyId,
      {String? bookStatus,
      String? wordCountMin,
      String? wordCountMax,
      String? sort});
  Future<List<Novel>> getRecommendRank();
  Future<List<Novel>> getEndBookRank();
  Future<List<Novel>> getHotRank();
  Future<List<Novel>> getHighScoreRank();
  Future<List<Novel>> getNewComeRank();
  Future<List<Novel>> getHotUpRank();
  Future<List<Novel>> getGuessYouLikeRank();

  Future<List<Chapter>> getChapterList(String novelId);

  Future<Chapter> getChapterContent(String novelId, String catalogue);
  Future<void> novelRead(String novelId);

  Future<List<Novel>> getBookShelf();
  Future<List<Novel>> getReadHistory();

  Future<bool> novelIsSubscribe(String novelId);

  Future<List<Classify>> getClassifyList(
      {required WorkDirection workDirection,
      required NovelTagType novelTagType});

  Future<List<Classify>> getHotClassifyList({WorkDirection? workDirection});

  Future<void> addVisitCount(String params);

  Future<List<NovelComment>> getBookCommentList(String params);

  Future<void> addBookComment(NovelComment params);
}
